import multiprocessing import time counter = 0 mutex = multiprocessing.Lock() def run(): global counter, mutex mutex.acquire() counter += 1 mutex.release() print("set counter:%s" % counter) def main(): pool = multiprocessing.Pool(processes=100) for i in range(100): pool.apply_async(run) pool.close() pool.join() if __name__ == "__main__": main()
set counter:1
set counter:1
set counter:1
set counter:1
set counter:1
set counter:1
set counter:1
set counter:1
set counter:1
set counter:1
set counter:1
set counter:1
set counter:1
set counter:1
set counter:1
set counter:1
set counter:1
set counter:1
set counter:1
set counter:1
set counter:1
set counter:1
set counter:1
set counter:1
set counter:1
set counter:1
set counter:1
set counter:1
set counter:1
set counter:1
set counter:1
set counter:1
set counter:1
set counter:1
set counter:1
set counter:1
set counter:1
set counter:1
set counter:1
set counter:1
set counter:1
set counter:1
set counter:1
set counter:1
set counter:1
set counter:1
set counter:1
set counter:1
set counter:1
set counter:1
set counter:1
set counter:1
set counter:1
set counter:1
set counter:1
set counter:1
set counter:1
set counter:1
set counter:1
set counter:1
set counter:1
set counter:1
set counter:1
set counter:1
set counter:1
set counter:1
set counter:1
set counter:1
set counter:1
set counter:1
set counter:1
set counter:1
set counter:1
set counter:1
set counter:1
set counter:1
set counter:1
set counter:1
set counter:1
set counter:1
set counter:1
set counter:1
set counter:1
set counter:1
set counter:1
set counter:1
set counter:1
set counter:1
set counter:1
set counter:1
set counter:2
set counter:2
set counter:2
set counter:2
set counter:2
set counter:2
set counter:2
set counter:2
set counter:2
set counter:2
Process finished with exit code 0
你这个是多进程。
线程是thread
基本概念需要搞清楚。具体可以关注我,看看我写的python编程操作系统篇,还有相关多线程、多进程、协程的内容。
多进程数据安全,每个进程内部的变量相互隔离。
多线程数据不安全,每个线程共享使用的变量存在数据不安全的风险。
我把这个一句改成并称多线程 就好了pool = multiprocessing.dummy.Pool(processes=100)
这个是为什么