You can follow the example code here and simply add a second subscription like so:
from std_msgs.msg import String
rospy.loginfo("Callback1 heard %s",data.data)
rospy.loginfo("Callback2 heard %s",data.data)
rospy.Subscriber("chatter1", String, callback1)
rospy.Subscriber("chatter2", String, callback2)
# spin() simply keeps python from exiting until this node is stopped
ROS Python nodes are inherently multi-threaded. When you get each callback, it will be in a separate thread. So this is an event-driven model.
Note that this behavior is different than the default behavior for ROS C nodes which are inherently single threaded unless you specifically make them multi-threaded.