python中一个进程中的多线程是要排队的,就好像一个线程按顺序执行,但是java中多线程是可以并发执行的。
对于任何Python程序,不管有多少的处理器,任何时候都总是只有一个线程在执行。
这点上Python是不同于Java的,对于多核的情况,Java可以同时开启多个线程进行处理
对于计算密集型的,我还是建议不要使用python的多线程而是使用多进程方式,而对于IO密集型的,
还是建议使用多进程方式,因为使用多线程方式出了问题,最后都不知道问题出在了哪里。
Python
但是听闻Python的多线程实际上并不能真正利用多核,所以如果使用多线程实际上还是在一个核上做并发处理。不过,如果使用多进程就可以真正利用多核,因为各进程之间是相互独立的,不共享资源,可以在不同的核上执行不同的进程,达到并行的效果。
import threading
import time
exitFlag = 0
class myThread (threading.Thread):
def __init__(self, threadID, name, counter):
threading.Thread.__init__(self)
self.threadID = threadID
self.name = name
self.counter = counter
def run(self):
print ("开始线程:" + self.name)
print_time(self.name, self.counter, 5)
print ("退出线程:" + self.name)
def print_time(threadName, delay, counter):
while counter:
if exitFlag:
threadName.exit()
time.sleep(delay)
print ("%s: %s" % (threadName, time.ctime(time.time())))
counter -= 1
# 创建新线程
thread1 = myThread(1, "Thread-1", 1)
thread2 = myThread(2, "Thread-2", 2)
# 开启新线程
thread1.start()
thread2.start()
thread1.join()
thread2.join()
print ("退出主线程")