小编ano*_*ous的帖子

python:如何跟踪大型项目中的函数执行顺序

我想在scrapy框架中跟踪功能/类执行命令。默认项目中有多个* .py文件,我想知道哪个py文件和类已按顺序执行。将记录器排在每个类和每个函数中听起来很愚蠢。如何可视化此顺序?

cprofile主要用于测量总时间。我还可以可视化一个模块内部的执行顺序,这是常见的问题,但是很难可视化多个模块。

在跟踪包方面,我没有找到适合大型项目(例如scrapy或django)的示例。跟踪用法教程仅涉及一个python文件。

我想在一个大型项目(例如scrapy)中的多个模块中跟踪多个* .py文件,而不是一个模块。

我知道像pdb这样的调试工具,但是我发现在整个项目中放置断点很麻烦。更重要的是,总结执行顺序并不容易。

最后,我通过使用Hunter进行了解决,它比内置跟踪模块更好。跟踪模块不提供include_dir属性。

对于那些对如何追踪所有刮板线条充满好奇的人。

$PYTHONHUNTER='Q(module_startswith=["scrapy", "your_project"])' scrapy list 
Run Code Online (Sandbox Code Playgroud)


对于django,跟踪rest_framework的执行代码并将其保存到test.log,例如:

$PYTHONHUNTER='Q(module_startswith=["rest_framework", "your_project"]), action=CallPrinter(stream=open("test.log", "w"))' python manage.py runserver --noreload --nothreading
Run Code Online (Sandbox Code Playgroud)

python profile trace visualization execution

7
推荐指数
2
解决办法
2869
查看次数

Django 过滤器 __date 时区感知

认为

  1. 我正在使用 Django 2.x 并使用默认设置。即,TIME_ZONE = 'UTC'USE_TZ = True

  2. 我正在夏威夷檀香山记录数据,这意味着檀香山的 2019-4-9 晚上 9 点(用户时间)是 UTC(服务器时间)的 2019-4-10

现在我想按 2019-4-9 Honolulu 时间(用户时间)过滤

这是一个演示代码

class TimelineTable(models.Model):
    accessed = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return f'{self.accessed}'
Run Code Online (Sandbox Code Playgroud)

这是TimelineTable中的数据(记录于2019-4-9檀香山时间

ID      accessed       
1       2019-04-10 07:19:30.319881 
2       2019-04-10 07:19:35.004506
3       2019-04-10 07:19:37.612088
Run Code Online (Sandbox Code Playgroud)

不考虑时区,获取数据工作正常

ID      accessed       
1       2019-04-10 07:19:30.319881 
2       2019-04-10 07:19:35.004506
3       2019-04-10 07:19:37.612088
Run Code Online (Sandbox Code Playgroud)

现在的问题是时区。

我在和服务器说话:嘿,给我那些我在 2019-4-9 在檀香山录制的条目。

>>> TimelineTable.objects.filter(accessed__date=datetime.date(2019, 4, 9))
<QuerySet []>
>>> TimelineTable.objects.filter(accessed__date=datetime.date(2019, 4, 10))
<QuerySet [<TimelineTable: 2019-04-10 07:19:30.319881+00:00>, <TimelineTable: 2019-04-10 07:19:35.004506+00:00>, …
Run Code Online (Sandbox Code Playgroud)

django timezone datetime

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

与 Solidity 函数相比,Go ABI.Pack 参数类型应该是什么样子?

下面的代码是一个流行的Solidity以太坊函数

function: swapExactETHForTokens(uint256 amountOutMin, address[] path, address to, uint256 deadline)
Run Code Online (Sandbox Code Playgroud)

Go 中的类型应该amountOutMin是什么样的?

这是我在 Go 中尝试过的:

function: swapExactETHForTokens(uint256 amountOutMin, address[] path, address to, uint256 deadline)
Run Code Online (Sandbox Code Playgroud)

错误信息:

不能使用 int 作为 ptr 类型作为参数

显示amountOutMin是一个指针,而solidity的声明是uint256。很混乱

编辑

最小可重复示例

amountOutMin := 20
data, err := routerABI.Pack("swapExactETHForTokens", amountOutMin, path, to, deadline)
Run Code Online (Sandbox Code Playgroud)

运行上面的代码

package main

import (
    "fmt"
    "log"
    "strings"
    "time"

    "github.com/ethereum/go-ethereum/accounts/abi"
    "github.com/ethereum/go-ethereum/common"
)

const (
    WETH           = "0xb4fbf271143f4fbf7b91a5ded31805e42b2208d6"
    tokenWanted    = "0x2aC3c1d3e24b45c6C310534Bc2Dd84B5ed576335"
)


func main() {

    now := time.Now()
    deadline := now.Add(10*time.Minute).Unix()

    tokenWantedAddress …
Run Code Online (Sandbox Code Playgroud)

types go ethereum solidity go-ethereum

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

在下列情况下,为什么结构地址在赋值后不等于

#include <stdio.h>


int main() {
    struct my_structure {
        char name[20];
        int number;
        int rank;
    };

    struct my_structure var = {"Stud", 35, 1};
    struct my_structure *ptr;
    ptr = &var;

    printf("%p ", &var);
    printf("\n");
    printf("%p ", &ptr);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

代码在c99下编译.ptr不等于var.为什么?


0x7ffeea577988


0x7ffeea577978

c struct pointers

-1
推荐指数
1
解决办法
60
查看次数