小编Cha*_*ker的帖子

我无法从公共跟踪器libtorrent下载torrent

libtorrent在python中使用模块下载torrent.我可以从私人跟踪器下载torrent,但不能从公共跟踪器下载.我尝试使用各种种子,我可以使用"传输"下载.我检查了4个不同的连接,都是一样的.

def downloadTorrent(torrent):
    """
    Download torrent using libtorrent library.
    Torrent will be stored at the current directory.
    """
    ses = lt.session()
    ses.listen_on(6881, 6891)

    info = lt.torrent_info(torrent)
    h = ses.add_torrent({'ti': info, 'save_path': './'})
    ses.start_dht()
    print 'starting', h.name()

    while (not h.is_seed()):
        s = h.status()

        state_str = ['queued', 'checking', 'downloading metadata', \
          'downloading', 'finished', 'seeding', 'allocating', 'checking fastresume']
        print '\r%.2f%% complete (down: %.1f kb/s up: %.1f kB/s peers: %d) %s' % \
          (s.progress * 100, s.download_rate / 1000, s.upload_rate / 1000, …
Run Code Online (Sandbox Code Playgroud)

python libtorrent

18
推荐指数
1
解决办法
1116
查看次数

在Python中模拟套接字连接

我正在尝试在python中为类编写单元测试.该类在init上打开一个tcp套接字.我试图嘲笑这个,以便我可以断言用正确的值调用连接但显然在单元测试中实际上不会发生.我已经厌倦了MagicMock,补丁等,但我还没有找到解决方案.

到目前为止我的班级看起来像这样

import socket

class MyClass(object):

    def __init__(self):
        self.tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        self.tcp_socket.connect('0.0.0.0', '6767')
Run Code Online (Sandbox Code Playgroud)

python unit-testing mocking

7
推荐指数
1
解决办法
6088
查看次数

为什么循环次序效应在矩阵乘法中运行时间?

我正在写一个C程序来计算两个矩阵的乘积.问题我注意到for循环的顺序很重要.例如:

对于N = 500

  for (int i = 0; i < N; ++i) {
    for (int j = 0; j < N; ++j) {
      for (int k = 0 ; k < N; ++k) {
       C[i*N+j]+=A[i*N+k] * B[k*N+j];
       }
     }
   }
Run Code Online (Sandbox Code Playgroud)

执行时间(秒): 1.1531820000

   for (int j = 0; j < N; ++j) {
     for (int k = 0 ; k < N; ++k) {
       for (int i = 0; i < N; ++i) {
       C[i*N+j]+=A[i*N+k] * B[k*N+j]; …
Run Code Online (Sandbox Code Playgroud)

c for-loop matrix

5
推荐指数
1
解决办法
245
查看次数

Key Bruteforcing

我需要找一个密码密钥.密钥长度为10个字符,密钥中字母的顺序为3,7,2,1,4,5,6,10,8,9.我也知道密钥的md5.

所以我写了

mystring = "abcdefghijklmnopqrstuvwxyz"
for letter3 in mystring:
    for letter7 in mystring[mystring.index(letter3):]:
        for letter2 in mystring[:mystring.index(letter7)]:
            for letter1 in mystring[:mystring.index(letter2)]:
                for letter4 in mystring[mystring.index(letter1):]:
                    for letter5 in mystring[mystring.index(letter4):]:
                        for letter6 in mystring[mystring.index(letter4):]:
                            for letter10 in mystring[mystring.index(leter6):]:  
                                for letter8 in mystring[:mystring.index(letter10)]:
                                    for letter9 in mystring[mystring.index(letter8):]:
                                        strr = "".join([letter1,letter2,letter3,letter4,letter5,letter6,letter7,letter8,letter9,letter10])
                                        if hashlib.md5(strr).hexdigest() == md5:
                                            print "key = " ,strr
                                            break
Run Code Online (Sandbox Code Playgroud)

字符顺序:

钥匙:

|letter1|letter2|letter3|letter4|letter5|letter6|letter7|letter8|letter9|letter10|
Run Code Online (Sandbox Code Playgroud)

密钥按字母顺序排序:

|letter3|letter7|letter2|letter1|letter4|letter5|letter6|letter10|letter8|letter9|
Run Code Online (Sandbox Code Playgroud)

问题是时间(在外部循环中进行一次迭代需要大约6个小时).有什么建议来优化for循环的范围?

python brute-force

4
推荐指数
1
解决办法
147
查看次数

标签 统计

python ×3

brute-force ×1

c ×1

for-loop ×1

libtorrent ×1

matrix ×1

mocking ×1

unit-testing ×1