使用线程会改变代码的结果吗?

时间:2017-05-03 14:17:15

标签: multithreading python-3.x image-processing neural-network python-multiprocessing

所以我编写了一个函数,在调用时返回一个字典。这就是它的样子

def path(image_file):
    Some function that returns a dictionary
    return co_ordinates


def Draw():
    image_file = "Data/test2.png"
    print(path(image_file))

Draw()

结果

{(60, 63, 65): (35, 49), (40, 40, 40): (35, 44), (85, 85, 85): (35, 45), (61, 61, 61): (16, 4), (59, 59, 59): (16, 5), (56, 56, 56): (16, 6), (52, 52, 52): (16, 7), (48, 48, 48): (16, 8), (44, 44, 44): (16, 9), (39, 39, 39): (16, 10), (35, 35, 35): (16, 11), (30, 30, 30): (16, 12), (23, 23, 23): (16, 13), (17, 17, 17): (16, 14), (12, 12, 12): (16, 15), (7, 7, 7): (16, 16), (3, 3, 3): (16, 17), (141, 141, 141): (6, 7), (97, 97, 97): (6, 8), (112, 112, 112): (6, 10), (80, 80, 80): (11, 8), (60, 63, 106): (18, 36), (187, 187, 187): (22, 37), (116, 116, 116): (7, 7), (62, 62, 62): (7, 10), (145, 187, 187): (7, 33), (145, 187, 166): (16, 37), (171, 171, 171): (8, 6), (124, 84, 65): (20, 33), (128, 128, 128): (9, 7), (174, 174, 174): (34, 44), (98, 98, 98): (9, 9), (41, 41, 41): (9, 10), (81, 81, 81): (10, 6), (63, 63, 63): (10, 11), (79, 79, 79): (11, 9), (165, 125, 86): (23, 33), (145, 104, 65): (11, 33), (101, 101, 101): (12, 7), (92, 92, 92): (12, 10), (60, 84, 126): (19, 32), (130, 130, 130): (13, 7), (124, 124, 124): (13, 10), (165, 187, 166): (13, 29), (140, 140, 140): (14, 6), (137, 137, 137): (14, 7), (152, 152, 152): (14, 10), (121, 121, 121): (14, 11), (109, 74, 58): (17, 37), (142, 144, 145): (17, 38), (51, 55, 57): (17, 39), (57, 62, 65): (17, 40), (69, 74, 78): (19, 40), (91, 99, 102): (19, 42), (79, 85, 88): (17, 43), (60, 63, 64): (17, 44), (86, 87, 87): (17, 45), (138, 165, 146): (19, 33), (181, 167, 139): (19, 34), (44, 52, 53): (19, 36), (24, 26, 27): (19, 37), (64, 69, 73): (19, 39), (74, 80, 85): (19, 41), (90, 98, 101): (19, 43), (77, 83, 85): (19, 44), (87, 90, 92): (19, 45), (62, 66, 68): (19, 46), (165, 187, 187): (20, 37), (102, 63, 65): (23, 32), (187, 187, 147): (22, 32), (60, 104, 147): (22, 33), (187, 146, 106): (23, 37), (169, 198, 226): (25, 7), (183, 183, 183): (25, 8), (183, 212, 241): (26, 9), (183, 169, 198): (35, 13), (169, 183, 212): (35, 14)}

然后我使用一个线程运行它,因为我有另一个功能我需要它来运行

if __name__ == '__main__':
    Thread(target=Sketch_Pad).start()
    Thread(target=Draw).start()

这次我得到了这个结果:

{(0, 0, 0): (3, 37), (60, 63, 65): (35, 38), (145, 187, 166): (19, 33), (40, 40, 40): (34, 44), (85, 85, 85): (34, 45), (124, 84, 65): (20, 33), (60, 63, 106): (18, 36), (60, 84, 126): (19, 37), (165, 187, 187): (20, 37), (165, 187, 147): (19, 35), (145, 187, 187): (19, 36), (187, 187, 187): (22, 37), (102, 63, 65): (23, 32), (165, 125, 86): (23, 33), (187, 187, 147): (22, 32), (60, 104, 147): (22, 33), (187, 146, 106): (23, 37), (76, 40, 112): (24, 8), (40, 76, 148): (24, 9), (112, 40, 40): (24, 15), (148, 219, 255): (24, 14), (183, 255, 255): (28, 7), (76, 148, 219): (28, 14), (148, 76, 40): (27, 14), (40, 40, 112): (27, 7), (112, 183, 255): (28, 12), (76, 40, 40): (27, 12), (40, 112, 183): (34, 10), (148, 183, 255): (28, 8), (112, 40, 76): (30, 7), (183, 183, 169): (31, 12), (183, 183, 183): (31, 13), (183, 212, 241): (33, 14), (169, 198, 226): (32, 13), (169, 183, 212): (34, 15), (57, 60, 62): (35, 46), (63, 66, 68): (34, 48), (67, 71, 73): (34, 49), (151, 157, 162): (35, 0), (124, 132, 137): (35, 1), (97, 106, 112): (35, 2), (93, 102, 109): (35, 5), (92, 101, 108): (35, 6), (110, 118, 124): (35, 7), (60, 62, 64): (35, 39), (59, 62, 64): (35, 42), (58, 61, 63): (35, 43), (39, 39, 39): (35, 44), (81, 81, 81): (35, 45), (57, 59, 61): (35, 47), (56, 59, 61): (35, 48), (55, 58, 60): (35, 49)}

所以我决定分别通过变量dict和dictw将结果传递给

print(dict.__len__())
52

print(dictw.__len__())
77

有人可以解释可能发生的事情我真的不明白这是在python 3上运行发生了什么

0 个答案:

没有答案