python執行緒間通訊

2022-05-27 06:09:09 字數 1550 閱讀 2105

#!/usr/bin/python

# -*- coding:utf8 -*-

from threading import thread, lock

import random

def test_thread():

# 執行緒間的通訊

# 使用鎖來控制共享資源的訪問

a = 0

n = 10000000

lock = lock()

def imcr(n):

global a

for i in range(n):

lock.acquire() # 可以寫成with lock:

a += 1 # a+=1

lock.release()

def decr(n):

for i in range(n):

global a

lock.acquire()

a -= 1

lock.release()

t = thread(target=imcr, args=(n,))

t2 = thread(target=decr, args=(n,))

t.start()

t2.start()

t.join()

t2.join()

print(a)

# 多執行緒的消費者與生產者模式

# from threading import thread

from queue import queue

q = queue(3)

class producter(thread):

def __init__(self, queue):

super().__init__()

self.queue = queue

def run(self):

while true:

item = random.randint(0, 99)

self.queue.put(item)

print('已產生%s' % item)

class consumer(thread):

def __init__(self, queue):

super().__init__()

self.queue = queue

def run(self):

while true:

item = self.queue.get()

print(item)

self.queue.task_done() # 告訴佇列這個任務執行完成

product = producter(q)

consumer = consumer(q)

product.start()

consumer.start()

# 注意,mgr=manger() q.mgr.queue()

# 程序版本的需要加乙個input()或者是

# producter.join consumer.join() 因為一旦主程序結束,**就不會繼續執行了

python執行緒 程序間通訊

from multiprocessing import process import os def get process info print info nix系統才有getpid及getppid方法 print process id os.getpid print parent process ...

執行緒間通訊

執行緒間通訊 多個執行緒在操作統一資源,但各個執行緒操作的動作不同。資源 class res class input implements runnable public void run else x x 1 2 class output implements runnable public vo...

執行緒間通訊

執行緒間的通訊 在乙個多執行緒的應用程式中,所有執行緒共享程序資源,協同工作。所以,執行緒之間的通訊是編寫多執行緒 應用的必不可少的環節。執行緒之間的通訊包括互斥 同步等,它是多 執行緒設計中最難控制的部分,也是關鍵部分。執行緒間的互斥 1 臨界區 在乙個多執行緒 的應用程式中,可能存在這樣的危險 ...