Python 同时运行多个线程
因此,我的目标是让Python 同时运行多个线程,python,multithreading,Python,Multithreading,因此,我的目标是让do\u something()函数启动自己的线程,以便do\u something()可以并行运行,而不必等待前一个线程完成。问题在于它似乎不是多线程(意味着一个线程在另一个线程启动之前完成) 我还有一个current_-thread().ident在do_-something()函数中,但启动的线程的标识似乎与运行python脚本的主线程相同。我认为我的方法是错误的 这是一个常见且容易出错的错误 target=do_something();但也什么都不做 您必须传递实际函数
do\u something()
函数启动自己的线程,以便do\u something()
可以并行运行,而不必等待前一个线程完成。问题在于它似乎不是多线程(意味着一个线程在另一个线程启动之前完成)
我还有一个
current_-thread().ident
在do_-something()
函数中,但启动的线程的标识似乎与运行python脚本的主线程相同。我认为我的方法是错误的 这是一个常见且容易出错的错误
target=do_something();但也什么都不做
您必须传递实际函数,而不是结果:
t = threading.Thread(target=do_something)
将更好地工作是的,其中一对邪恶的记号再次划过,我相信@Jean-François Fabre关于眼前的问题是正确的。即使解决了这个问题,您也应该知道,在Python中,线程并不是真正同时运行的,因为在大多数情况下,Python解释器不能同时解释两个或多个不同的执行线程(并且具有称为GIL(全局解释器锁)的功能)相反,它会运行一个线程,直到它阻止等待共享资源、I/O或调用sleep()
,然后才切换到运行另一个线程(如果有的话),等待轮到它。
t = threading.Thread(target=do_something)